'use strict';
function isObject(o) {
    return Object.prototype.toString.call(o) === '[object Object]'
}
function spinnerStart(msg = 'loading...', spinnerStr = '|/-\\'){
    const Spinner = require('cli-spinner').Spinner
    const spinner = new Spinner(msg + ' %s');
    spinner.setSpinnerString(spinnerStr);
    spinner.start()
    return spinner
}
function sleep(timeout = 1000){
    return new Promise(resolve => setTimeout(resolve, timeout))
}
//兼容windows系统命令
function exec(command, args, options){
    const win32 = process.platform === 'win32'
    const cmd = win32 ? 'cmd' : command;
    const amdArgs = win32 ? ['/c'].concat(command, args) : args
    return require('child_process').spawn(cmd, amdArgs, options || {})
}
function execAsync(command, args, options){
    return new Promise((resolve, reject)=>{
        const p = exec(command, args, options);
        p.on('error', e=>{
            reject(e)
        })
        p.on('exit', c=>{
            resolve(c)
        })
    })
}
module.exports = {
    isObject,
    spinnerStart,
    sleep,
    exec,
    execAsync
};
